#ifndef RENDERINGPARAMS_H
#define RENDERINGPARAMS_H

#include "Vector2.h"
#include "Vector3.h"
#include "Vector4.h"
#include "Matrix.h"
#include "Camera.h"

namespace Cvekas {

/// Encapsulates parameters commonly used by effects 
class RenderingParams : public boost::noncopyable
{
public:	
	/// Sets params which varies per frame. VideoDevice does this.
	void setPerFrame(float time);
	/// Sets params which varies per scene. VideoDevice does this.
	void setPerScene(const Matrix& projection, const Vector2& rt_size, bool perspective = true);
	/// Sets params which varies per batch. Must be called in Renderable::onPreRender()
	void setPerBatch(const Matrix& world, int pass);
	/// Sets camera.
	void setCamera(const Camera& camera);

	Matrix world, view, projection, world_view, view_projection, world_view_projection;
	Vector3 camera_pos, camera_dir, camera_up;
	Vector2 rendertarget_size;
	float projection_fov, clip_near, clip_far, time;
	int pass;
};

} // namespace

#endif